// pages/login/login.js

//获取应用实例
const app = getApp()

Page({

	/**
	 * 页面的初始数据
	 */
	data: {
		myUserInfo: {
			id: "",
			name: "",
			number: "",
			password: ""
		}
	},

	// 表单提交
	submit(e) {

		wx.showLoading({
			title: '正在登录',
		});

		console.log('form发生了submit事件，携带数据为：', e.detail.value)

		// 为数据赋值
		this.setData({
			"myUserInfo.name": e.detail.value.name,
			"myUserInfo.number": e.detail.value.number,
			"myUserInfo.password": e.detail.value.password
		})

		// 向后端服务器发送请求
		wx.request({
			url: app.globalData.url + 'wx/login',
			method: "POST",
			header: { 'content-type': 'application/x-www-form-urlencoded' },
			data: {
				name: this.data.myUserInfo.name,
				number: this.data.myUserInfo.number,
				password: this.data.myUserInfo.password
			},
			success: res => {
				if (res.data.status === "success") {

					// 处理消息提示框
					wx.hideLoading({
						success: (res) => { },
					});
					wx.showToast({
						title: '登录成功！',
					});

					// 将返回的用户id存储到 myUserInfo 中，然后存储到全局数据中
					this.setData({
						"myUserInfo.id": res.data.id
					})

					// 将数据存到全局的 APP.js 里面的 globalData 中
					var app = getApp();
					console.log("存储前", this.data.myUserInfo);
					app.globalData.myUserInfo = this.data.myUserInfo;
					console.log("存储后", app.globalData.myUserInfo);

					// 将数据存储到 storage 中
					wx.setStorage({
						data: this.data.myUserInfo,
						key: 'myUserInfo',
					})

					// 使用定时器，让 “登录成功” 提示框显示时间久一点
					setTimeout(function (e) {
						// 登录成功之后，进行页面的跳转
						wx.reLaunch({
							url: '/pages/index/index',
						})
					}, 1000)

				} else {
					console.log("登录失败");

					wx.hideLoading({
						success: (res) => { },
					});

					wx.showToast({
						title: '登录失败，请检查用户名和密码！',
						icon: "none"
					})
				}
			}
		})
	},

	// 忘记密码
	forgetPwd: function(e) {
		wx.showToast({
			title: '请联系管理员',
			icon: 'none',
			duration: 2500
		  })
	},

	/*
		生命周期函数--监听页面显示
		页面显示之后，尝试从缓存中获取数据
			如果获取成功，则自动登录
			如果获取失败，则用户需要输入用户名和密码进行登录
	*/
	onShow: function () {

		// 同步获取缓存中的数据
		var tempUserInfo = wx.getStorageSync('myUserInfo');
		console.log("同步获取数据", tempUserInfo);

		if (tempUserInfo.name === null) {
			console.log("缓存中获取数据失败，请输入用户名密码进行登录！");
		} else {
			// 缓存中存在数据，则执行自动登录
			wx.showLoading({
				title: '自动登录中....',
			})
		}

		// 同步获取数据之后，手动执行登录，不调用 submit 函数，直接发送请求
		// this.submit();
		wx.request({
			url: app.globalData.url + 'wx/login',
			method: "POST",
			header: { 'content-type': 'application/x-www-form-urlencoded' },
			data: {
				id: tempUserInfo.id,
				name: tempUserInfo.name,
				number: tempUserInfo.number,
				password: tempUserInfo.password
			},
			success: res => {
				if (res.data.status === "success") {

					// 如果自动登录成功，说明缓冲中已经存在该数据了。将缓冲中的数据存入到全局变量中
					var app = getApp();
					app.globalData.myUserInfo = tempUserInfo;

					wx.hideLoading({
						success: (res) => { },
					})

					wx.showToast({
						title: '自动登录成功！',
					})


					setTimeout(() => {
						console.log(666);
						wx.reLaunch({
							url: '/pages/index/index',
						})
					}, 1000);


					console.log("自动登录成功");

					// 自动登录成功之后，进行页面的跳转

				} else {
					console.log("自动登录失败");

					wx.hideLoading({
						success: (res) => {
							wx.showToast({
								title: '自动登录失败',
								icon: "none"
							})
						},
					})
				}
			}
		})

		// 这里的 getStorage() 是异步方法，放在生命周期函数里面可能会调用失败
		// 页面显示出来的时候，从 storage 中获取数据，实现自动登录
		// wx.getStorage({
		// 	key: 'userInfo',
		// 	success: res => {
		// 		this.data.userInfo = res.data.userInfo;
		// 		console.log("自动登录", res.data.userInfo);

		// 		/* 
		// 			先将数据存储到全局的 App.js 的 globalData 中，里面的数据本次登录才有效
		// 			而 storage 中的数据只要不清楚缓存，一直有效
		// 		*/
		// 		var app = getApp();
		// 		app.globalData.userInfo = this.data.userInfo;

		// 		// 手动执行登录函数，用户数据已经获取到了
		// 		// this.submit();
		// 	}
		// })

	}
})